import json
from deviceServerBaseQueue1 import C_queueServer
from queue import Queue # 引入消息队列用于进程间的通信

class C_communicatWeb:
    '''
    和Web的通信
    '''
    def __init__(self):
        self.recv_FIFO = Queue(maxsize=0) #maxsize设置队列中，数据上限，小于或等于0则不限制，容器中大于这个数则阻塞，直到队列中的数据被消掉

    def recv_init(self):
        '''
        初始化消息接收
        输入: None
        输出: None
        '''
        aClass_queueServer_recv = C_queueServer() # 实例化消息队列接收
        aClass_queueServer_recv.queue_init_rev(queueName="DjangoPost")
        # 声明回调函数
        def callback(v1,v2,v3,bodyx):
            #print("C_queueServer:回调函数 接收到了数据",bodyx)
            self.recv_FIFO.put(bodyx)
        aClass_queueServer_recv.queue_rev_Run(func=callback, queueName="DjangoPost")

    def recv_get_data(self, timeout = 2):
        '''
        消息接收函数 使用阻塞的方式接收
        输入: 超时时间
        输出: 获取到的json字符串数据
        '''
        jsonStr = self.recv_FIFO.get(block=True, timeout=2) # 阻塞方式接收获取数据
        return jsonStr

    def sand_init(self):
        self.aClass_queueServer_sand = C_queueServer()
        
    def sand_set_data(self, Datastr, QueueName):
        self.aClass_queueServer_sand.queue_init_sand(queueName=QueueName)
        self.aClass_queueServer_sand.queue_sand(datastr=Datastr, queueName=QueueName)# 将解析出来的json发送给web


if __name__ == '__main__':
    pass